python控制台等待输出倒计时、转圈、进度条 您所在的位置:网站首页 python tkinter进度条 python控制台等待输出倒计时、转圈、进度条

python控制台等待输出倒计时、转圈、进度条

2023-10-07 12:30| 来源: 网络整理| 查看: 265

python控制台等待输出倒计时、转圈、进度条 1. 控制台输出倒计时 #!/usr/bin/python3 # -*- coding:utf-8 -*- """ python控制台倒计时 """ __author__ = "river.yang" __date__ = "2022/11/26 20:20" __version__ = "1.0.0" from time import sleep from datetime import datetime, timedelta import time def count_down(weeks=0, days=0, hours=0, minutes=0, seconds=0): remain_time = timedelta(weeks=weeks, days=days, hours=hours, minutes=minutes, seconds=seconds) while remain_time.total_seconds() > 0: time.sleep(1) remain_time -= timedelta(seconds=1) print("\r 倒计时:{}".format(remain_time), end="", flush=True) def print_test(): for i in range(20): print("#", end="", flush=True) sleep(0.1) if __name__ == '__main__': print("当前版本: ", __version__) count_down(seconds=11)

代码解析:

这里主要用到了print函数的几个参数,解释如下:

参数1:end,设置字符串末尾的字符,默认是"/n"换行符,这里赋值"",也就是什么也不加,就不会自动换行

参数2:flush,设置是否清除显示,默认是False,赋值True避免出现重影等显示问题

另外,这里在输出倒计时前,加了"/r"字符,意思是将光标定位到行首进行输出显示 输出效果如下: 在这里插入图片描述

2. 控制台输出转圈 def circle_print(total_time=0): list_circle = ["\\", "|", "/", "—"] for i in range(total_time * 4): time.sleep(0.25) print("\r{}".format(list_circle[i % 4]), end="", flush=True)

输出效果如下:

在这里插入图片描述

3. 控制台输出进度条 (1)简易进度条,没有进度指示,只有简单符号 def print_test(): for i in range(20): print("#", end="", flush=True) sleep(0.1)

效果如下:

在这里插入图片描述

(2)复杂进度条

这里需要依赖第三方库,使用指令安装:pip3 install tqdm

# -*- coding=utf-8 -*- import time from tqdm import tqdm for i in tqdm(range(100)): time.sleep(0.1)

** 输出效果如下:**

在这里插入图片描述

(3)复杂进度条

上面的进度条要依赖第三方库,不方便移植程序,用着着实不爽,所以干脆自己实现一个方便移植

#!/usr/bin/python3 # -*- coding:utf-8 -*- """ python控制台进度打印 """ __author__ = "river.yang" __date__ = "2022/11/26 20:20" __version__ = "1.0.0" import time def del_progress(): time.sleep(0.2) def progress_print(total_cnt=20, index_cha='+', pro_total_cnt=50, fun=None): """ :param total_cnt: 总循环次数 :param index_cha: 进度指示符号,可以任意替换喜欢的符号 :param pro_total_cnt: 100%进度显示的总符号个数 :param fun: 每次进度循环处理的回调函数 """ start_time = time.time() for i in range(total_cnt): current_cnt = int((i + 1) / total_cnt * pro_total_cnt) str_progress = index_cha * current_cnt + ' ' * (pro_total_cnt - current_cnt) spend_time = time.time() - start_time print("\033[31m\r{:.1%} [{}] total time: {:.2f}s\033[0m".format((i + 1) / total_cnt, str_progress, spend_time), end="", flush=True) if fun is not None: fun() if __name__ == '__main__': print("当前版本: ", __version__) progress_print(fun=del_progress)

输出效果如下:

在这里插入图片描述

代码解析

这里用到了几个知识点

print的几个参数:end,flush上面讲过了不再赘述print显示颜色,语法格式为 \033[前景色m******\033[0m # 这里****为打印显示的内容 \033[显示方式; 前景色; 背景色m******\033[0m

其中显示方式和颜色如下表

显示方式显示效果0默认值1高亮(加粗)4下划线5闪烁7反显8不可见 前景色背景色颜色说明3040黑色3141红色3242绿色3343黄色3444蓝色3545紫红色3646青蓝色3747白色 format格式化字符串百分比显示和保留小数位数,详细用法见下表 数字格式输出描述3.1415926{:.2f}3.14保留小数点后两位3.1415926{:+.2f}+3.14带符号保留小数点后两位-1{:-.2f}-1.00带符号保留小数点后两位2.71828{:.0f}3不带小数5{:0>2d}05数字补零 (填充左边, 宽度为2)5{:x


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有